package juc.container;

import java.util.Iterator;
import java.util.concurrent.CopyOnWriteArrayList;

/**
 * @author fangbin
 *
 *  适用场景：读操作可以尽可能地块，而写操作慢一些也没有太大关系
 *  缺点： 
 * @desc 数据一致性问题：CopyOnWrite容器只能保证数据的最终一致性，不能保证数据的实时一致性。
 * 所以如果你希望写入的数据马上能读到，请不要使用CopyOnWrite容器
 *       内存占用问题：因为CopyOnWrite的细写是复制机制，所以在进行写操作的时候，内存里会同时驻扎两个对象的内存
 * @date 2020/6/20 22:26
 */
public class CopyOnWriteListDemo2 {
    public static void main(String[] args) {
        CopyOnWriteArrayList<Integer> list  = new CopyOnWriteArrayList<>(new Integer[]{1,2,3});
        System.out.println(list);

        Iterator iterator = list.iterator();

        list.add(5);
        Iterator iterator2 = list.iterator();
        iterator.forEachRemaining(System.out::println);
        iterator2.forEachRemaining(System.out::println);
    }
}
